// 产品接口，定义了产品的使用方法   
interface Product {
    void use();   
}
   
// 具体产品类A，实现产品接口   
class ConcreteProductA implements Product {
    @Override
    public void use() {
        System.out.println("Using ConcreteProductA.");
    }   
}
   
// 具体产品类B，实现产品接口   
class ConcreteProductB implements Product {
    @Override
    public void use() {
        System.out.println("Using ConcreteProductB.");
    }   
}
   
// 工厂类，用于创建不同类型的产品   
class ProductFactory {
    // 根据产品类型创建相应的产品对象
    public static Product createProduct(String type) {
        if ("A".equals(type)) {
            return new ConcreteProductA();
        } else if ("B".equals(type)) {
            return new ConcreteProductB();
        } else {
            throw new IllegalArgumentException("Unknown product type: " + type);
        }
    }   
}
   
// 测试工厂模式   
public class FactoryPatternDemo {
    public static void main(String[] args) {
        // 通过工厂创建产品A并使用
        Product productA = ProductFactory.createProduct("A");
        productA.use();

        // 通过工厂创建产品B并使用
        Product productB = ProductFactory.createProduct("B");
        productB.use();
    }   
}


